import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  UpdateDateColumn,
  ManyToMany,
  JoinTable,
} from 'typeorm'
import { Permission } from './permission.entity'

/**
 * 角色实体
 * 用于定义系统中的角色，如管理员、普通用户等
 */
@Entity('va_roles')
export class Role {
  /** 角色主键ID */
  @PrimaryGeneratedColumn()
  id: number

  /** 角色名称（唯一） */
  @Column({ unique: true })
  name: string

  /** 角色显示名 */
  @Column()
  label: string

  /** 角色描述 */
  @Column({ type: 'text', nullable: true })
  description: string

  /** 角色状态（1: 启用, 0: 禁用） */
  @Column({ default: 1 })
  status: number

  /** 角色排序 */
  @Column({ default: 0 })
  sort: number

  /** 创建时间 */
  @CreateDateColumn()
  createdAt: Date

  /** 更新时间 */
  @UpdateDateColumn()
  updatedAt: Date

  /** 角色拥有的权限列表 */
  @ManyToMany(() => Permission, (permission) => permission.roles)
  @JoinTable({
    name: 'va_role_permissions',
    joinColumn: { name: 'role_id', referencedColumnName: 'id' },
    inverseJoinColumn: { name: 'permission_id', referencedColumnName: 'id' },
  })
  permissions: Permission[]
}
